// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Риобет Официальный Сайт и Зеркало Онлайн Казино – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Риобет Официальный Сайт и Зеркало Онлайн Казино

Риобет Казино – это не просто игра, это возможность почувствовать себя победителем! Наш официальный сайт предлагает вам огромный выбор игр, щедрые бонусы и безопасность ваших данных.

Не можете попасть на Риобет Официальный Сайт? Используйте Риобет Зеркало на Сегодня и продолжайте играть без перерывов!

Присоединяйтесь к Rio Bet уже сейчас и откройте для себя мир азарта и выигрыша!

Риобет: Официальный Сайт и Зеркало Онлайн Казино

Добро пожаловать в мир Риобет – вашего надежного партнера в мире онлайн-развлечений! Здесь вы найдете все, что нужно для увлекательного и безопасного времяпрепровождения.

  • Риобет Официальный Сайт – это ваш главный источник информации о всех аспектах игры. Здесь вы можете:
    • Зарегистрироваться и начать игру в Риобет Казино.
    • Получить доступ к разнообразию игр, включая слоты, рулетку, блэкджек и многое другое.
    • Воспользоваться бонусами и акциями, которые регулярно обновляются.
  • Риобет Зеркало – ваш безопасный выход в случае блокировки основного сайта. Зеркало обеспечивает:
    • Непрерывный доступ к Риобет Казино.
    • Сохранение всех функций и возможностей основного сайта.
    • Обновление Риобет Зеркала на Сегодня для вашего удобства.

Не упустите шанс погрузиться в мир азарта и выигрыша с Риобет! Ваше приключение начинается здесь.

Преимущества Онлайн Казино Риобет

  • rio bet – это надежное и проверенное онлайн казино с официальной лицензией.
  • В риобет казино доступно множество игр от ведущих провайдеров, включая слоты, рулетку, блэкджек и многое другое.
  • казино риобет предлагает щедрые бонусы и акции для новых и постоянных игроков.
  • Платежи в riobet casino осуществляются быстро и безопасно через множество платежных систем.
  • Если основной сайт недоступен, вы всегда можете воспользоваться риобет зеркало на сегодня для беспрепятственного доступа.
  • riobet зеркало обеспечивает полную анонимность и безопасность ваших данных.
  • В риобет зеркало рабочее всегда обновляется, чтобы игроки могли наслаждаться играми без перерывов.

Присоединяйтесь к риобет и получите незабываемый опыт игры в онлайн казино!

Безопасность и Надежность Риобет

Риобет (Riobet) гарантирует своим пользователям максимальный уровень безопасности и надежности. Казино Риобет использует передовые технологии шифрования, чтобы защитить личные данные и финансовые операции каждого игрока. Благодаря этому, игроки могут быть уверены в конфиденциальности своих данных и безопасности транзакций.

Для тех, кто ценит постоянный доступ к игровым развлечениям, Риобет предлагает рабочее зеркало на сегодня. Это позволяет игрокам без проблем продолжать игру, даже если основной сайт временно недоступен. Riobet зеркало обеспечивает бесперебойную работу и полную функциональность, как и официальный сайт Риобет.

Riobet казино регулярно проходит аудиты и сертификацию независимыми организациями, что подтверждает его честность и надежность. Игроки могут быть уверены, что все игры Rio Bet проходят в честной и справедливой среде.

Выбирайте Риобет – выбирайте безопасность и надежность!

Игры и Развлечения на Риобет

Риобет (Riobet) предлагает широкий выбор игр и развлечений для всех любителей онлайн-казино. На riobet официальный сайт вы можете найти тысячи слотов, рулетки, блэкджек и многое другое. Независимо от того, предпочитаете ли вы классические игры или ищете что-то новое, riobet casino удовлетворит ваши потребности.

Если вы столкнулись с проблемами доступа, используйте riobet зеркало на сегодня. Это гарантирует, что вы сможете продолжать наслаждаться играми и развлечениями на rio bet без перерывов. Riobet зеркало рабочее всегда доступно и обеспечивает бесперебойную работу платформы.

Не упустите шанс испытать удачу и получить незабываемые впечатления на казино риобет. С riobet зеркалом вы всегда будете на связи с вашим любимым онлайн-казино.

Бонусы и Акции Риобет

Riobet Casino предлагает своим игрокам широкий выбор бонусов и акций, которые делают игру еще более увлекательной и выгодной. На riobet официальный сайт и riobet зеркало рабочее регулярно обновляются предложения, чтобы каждый игрок мог получить максимум удовольствия и выигрыша.

Акция
Описание

Приветственный Бонус Новые игроки казино риобет получают щедрый приветственный бонус на первый депозит. Увеличьте свой стартовый капитал и наслаждайтесь игрой! Ежедневные Фриспины Каждый день на riobet казино доступны фриспины на популярные слоты. Используйте riobet зеркало на сегодня, чтобы не пропустить шанс выиграть без депозита! Кэшбэк Riobet возвращает часть потерянных средств в виде кэшбэка. Это отличная возможность вернуть свои деньги и продолжить игру. Турниры Участвуйте в турнирах rio bet и соревнуйтесь с другими игроками за ценные призы. Победителей ждут крупные выигрыши и почетные места в рейтинге!

Не упустите шанс воспользоваться всеми преимуществами riobet казино. Переходите на riobet официальный сайт или riobet зеркало рабочее, чтобы узнать о новых акциях и бонусах!

Как Зарегистрироваться на Риобет

На главной странице riobet casino найдите кнопку “Регистрация”. Нажмите на неё и заполните все необходимые поля: адрес электронной почты, пароль и выберите валюту. Убедитесь, что введенная информация корректна, так как она будет использоваться для входа в ваш аккаунт.

После заполнения формы, подтвердите свою регистрацию, следуя инструкциям на экране. В некоторых случаях может потребоваться подтверждение по электронной почте. После успешного завершения регистрации, вы сможете войти в свой аккаунт на rio bet и начать игру.

Не забудьте ознакомиться с правилами и условиями riobet казино, чтобы быть в курсе всех аспектов игры. Удачи в игре!

Поддержка Клиентов Риобет

В Riobet казино мы ценим каждого игрока и делаем все возможное, чтобы обеспечить вам максимально комфортное и безопасное времяпрепровождение. Наша служба поддержки клиентов работает круглосуточно, 7 дней в неделю, чтобы решать любые вопросы и проблемы, которые могут возникнуть у вас во время игры.

Если у вас возникли вопросы по поводу риобет официальный сайт, риобет зеркало на сегодня или другим аспектам нашего сервиса, не стесняйтесь обращаться к нам. Вы можете связаться с нами через онлайн-чат, электронную почту или телефон. Наши специалисты всегда готовы помочь вам и предоставить необходимую информацию.

Мы также предлагаем подробные руководства и FAQ-раздел на риобет зеркало рабочее, где вы найдете ответы на самые распространенные вопросы. Независимо от того, являетесь ли вы новичком или опытным игроком, наша поддержка клиентов всегда готова помочь вам на любом этапе вашего пути в Rio Bet.

Помните, что ваше удовлетворение – наш главный приоритет. Мы стремимся сделать ваш опыт в риобет казино максимально приятным и безопасным. Не стесняйтесь обращаться к нам в любое время!

Design and Develop by Ovatheme